Page({
  data: {
    // 初始单词数据
    originalWordList: [
      { word: "apple", meaning: "苹果", is_learned: false },
      { word: "banana", meaning: "香蕉", is_learned: false },
      { word: "orange", meaning: "橙子", is_learned: false }
    ],
    currentWordList: [],  //不会的单词存放点
    currentIndex: 0,  //当前单词进度
    isCardVisible: true, //控制卡片内容变化
    disableButtons: false, //控制按钮可控
    currentRound: 1,  // 当前轮次
    totalWords: 0     // 总词数
  },

  onShow: function() {
    // 将初始单词数据进行深拷贝，然后存放到current数组里，保证每次进入学习页面时，都从头开始学习
    const initialList = JSON.parse(JSON.stringify(this.data.originalWordList));
    this.setData({
      currentWordList: initialList,  //由于控制的是current数组，因此初始数组只是一个保存箱
      currentIndex: 0,
      isCardVisible: true,
      totalWords: this.data.originalWordList.length,
      currentRound: 1 
    });
  },

  // 如果不会的逻辑操作->点击按钮，先将按钮不可控化，使用回调函数，调用 goToNextWord 方法，is_Learned=false，表示不会，最后使按钮可控
  handleNotSure: function() {
    this.setData({ disableButtons: true });
    const that = this;
    clearTimeout(this.data.notSureTimer);
    this.setData({
      notSureTimer: setTimeout(() => {
        that.goToNextWord(false);
        this.setData({ disableButtons: false });
      }, 300)
    });
  },

  // 如果会的逻辑操作->点击按钮，先将按钮不可控化，使用回调函数，调用 goToNextWord 方法，is_Learned=true，表示不会，最后使按钮可控
  handleSure: function() {
    const that = this;
    this.setData({ disableButtons: true });
    clearTimeout(this.data.sureTimer);
    this.setData({
      sureTimer: setTimeout(() => {
        that.setData({
          [`currentWordList[${that.data.currentIndex}].is_learned`]: true
        }, () => {
          that.goToNextWord(true);
          this.setData({ disableButtons: false });
        });
      }, 300)
    });
  },

  // 前往下一个单词卡的方法
  goToNextWord: function(isSure) {
    let newIndex = this.data.currentIndex + 1; //重置当前的页数，应该是+1
    // 检查是否为最后一个数据，如果是->发送提示，如果不是，使用filter筛出所有不会的单词
    if (newIndex < this.data.currentWordList.length) {
      this.setData({ currentIndex: newIndex });
    } else {
      const unlearned = this.data.currentWordList.filter(word => !word.is_learned);
      
      if (unlearned.length > 0) {
        // 增加轮次计数
        const newRound = this.data.currentRound + 1;
        wx.showToast({
          title: `进入第${newRound}轮`,
          icon: "none"
        });
        
        this.setData({
          currentWordList: unlearned,
          currentIndex: 0,
          currentRound: newRound
        });
      } else {
        wx.showToast({
          title: "全部单词已掌握！",
          icon: "success"
        });
        // 使用深拷贝创建原始单词列表的副本 resetList(第三个数组),重置当前currentWordList的为resetList的，然后开启下一轮
        const resetList = JSON.parse(JSON.stringify(this.data.originalWordList));
        this.setData({
          currentWordList: resetList,
          currentIndex: 0,
          currentRound: 1  
        });
      }
    }
  },

  onUnload: function() {
    clearTimeout(this.data.sureTimer);
    clearTimeout(this.data.notSureTimer);
  }
});